/**
 * 
 */

package com.wutianyi.taskqueue.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.wutianyi.taskqueue.dataobject.TaskQueueDO;

/**
 * @author wutianyi
 * 
 */
public interface TaskMapper {

	@Insert("insert into taskqueue(task_id, task_name, task_props, status, gmt_create, gmt_modified) values (#{task.task.taskId}, #{task.task.taskName},#{task.taskPropsString}, #{task.status}, now(), now()) ON DUPLICATE KEY UPDATE STATUS=2")
	public void addTask(@Param("task") TaskQueueDO task);

	/**
	 * 映射到配置文件，实现批量更新
	 * 
	 * @param tasks
	 */
	public void batchAddTasks(@Param("tasks") List<TaskQueueDO> tasks, int status);

	/**
	 * 批量获取任务
	 * 
	 * @param size
	 * @return
	 */
	@Select("select task_id taskId, task_name taskName, task_props taskPropsString, status from taskqueue where status = #{status} limit #{size}")
	public List<TaskQueueDO> listTasks(@Param("size") int size, @Param("status") int status);

	/**
	 * 映射到配置文件中
	 * 
	 * @param taskIds
	 */
	public void updateTasksStatus(@Param("taskIds") List<String> taskIds,
			@Param("newStatus") int newStatus);

	@Delete("delete from taskqueue where task_id = #{taskId}")
	public int removeTask(@Param("taskId") String taskId);
	
}
